package common.util;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import play.Logger;

/***********************************
 * <pre>
 * 유틸리티 클래스
 * 2012.05.11 : 신규작성 (박상헌)
 * </pre>
 * @author 박상헌
 ***********************************/
public class Util {
	
	/**********************************************
	 * <pre>
	 * Map의 데이타를 QueryString 형태로 변환해준다
	 * 2011.05.11 : 신규작성 (박상헌)
	 * </pre>
	 * @param map
	 * @return
	 **********************************************/
	public static String createQueryString(Map<String, String> map) {
		StringBuffer buffer = new StringBuffer();

		buffer.append("?");
		Set<String> set = map.keySet();
		String[] keys = set.toArray(new String[0]);
		for (int i = 0; i < keys.length ; i++) {
			String key = keys[i];
			String value = map.get(key);
			
			if (value == null) continue;
			
			try {
				String encKey = URLEncoder.encode(key, "UTF-8");
				String encValue = URLEncoder.encode(value, "UTF-8");
				buffer.append(encKey);
				buffer.append("=");
				buffer.append(encValue);
				
				if (i < keys.length - 1)
					buffer.append("&");
			} catch (UnsupportedEncodingException e) {
				Logger.error(e.getMessage());
			} // try
			
		} // for
		
		return buffer.toString();
	} // createQueryString
	
	/*************************************************
	 * <pre>
	 * QueryString 형태의 문자열을 맵으로 변환해준다.
	 * 2011.05.11 : 신규작성 (박상헌)
	 * </pre>
	 * @param data
	 * @return
	 *************************************************/
	public static Map<String, String> parseQueryString(String data) {
		Map<String, String> resultMap = new HashMap<String, String>();
		
		String[] params = data.split("[&]");
		for (String param : params) {
			String[] kv = param.split("[=]");
			String key = kv[0];
			if (kv.length >= 2) { 
				String value = kv[1];
				resultMap.put(key, value);
			} // if
		} // for
		
		return resultMap;
	} // parseQueryString()
} // class Util
